package com.kaikeba.dao;

import com.kaikeba.bean.Courier;
import com.kaikeba.exception.DuplicateCodeException;

import java.util.List;
import java.util.Map;

/**
 * @description:快递员管理
 * @author: ManolinCoder
 * @time: 2021/9/3
 */
public interface BaseCourierDao {

    /**
     * @Author LC
     * @Description //TODO 查询快递员表中所有记录包括总数和新增（新增就是注册时间与当前时间相同）
     * @Date 14:56 2021/9/3
     * @Param []
     * @return {size:总数,day:新增}
     **/
    Map<String,Integer> console();

    /**
     * @Author LC
     * @Description //TODO 查询所有快递员信息
     * @Date 15:02 2021/9/3
     * @Param [limit 是否分页的标记，true表示分页。false表示查询所有快递, offset SQL语句的起始索引, pageNumber 每一页查询的数量]
     * @return 快递员信息集合
     **/
    List<Courier> findAll(boolean limit,int offset,int pageNumber);

    /**
     * @Author LC
     * @Description //TODO 根据快递员手机号查找对应快递员
     * @Date 15:04 2021/9/3
     * @Param [phoneNumber 快递员手机号]
     * @return 查询的快递员信息，手机号不存在时返回null
     **/
    Courier findByPhoneNumber(String phoneNumber);

    /**
     * @Author LC
     * @Description //TODO 根据快递员主键id查找对应快递员
     * @Date 16:29 2021/9/3
     * @Param [id 快递员主键id]
     * @return 查询的快递员信息，id不存在时返回null
     **/
    Courier findById(int id);
    /**
     * @Author LC
     * @Description //TODO 快递员信息的录入
     * @Date 15:06 2021/9/3
     * @Param [c 快递员信息对象]
     * @return 录入的结果,true表示成功,false表示失败
     **/
    boolean insert(Courier c) throws DuplicateCodeException;

    /**
     * @Author LC
     * @Description //TODO 快递员信息的更新
     * @Date 15:07 2021/9/3
     * @Param [id 要更新的快递员id, newc 新的快递员信息对象]
     * @return 更新的结果,true表示成功,false表示失败
     **/
    boolean update(int id,Courier newc);

    /**
     * @Author LC
     * @Description //TODO 根据快递员的id删除相应数据
     * @Date 15:08 2021/9/3
     * @Param [id 快递员的id]
     * @return 删除的结果,true表示成功,false表示失败
     **/
    boolean delete(int id);
}
